package com.yuw.datatype;

/*
 * 课堂笔记：
 * 0、补充内容
 *    计算机基础
 *    计算机中只有0/1二进制；
 *    一个0或一个1称作1bit；叫做1位代表一个0或一个1；
 *    8bit叫做1byte；叫做1字节；一个字节中有8位0或1；
 *    从byte开始进制就是1024（2的10次方）
 *    1024byte = 1kb
 *    1024kb = 1mb
 *    1024mb = 1gb
 *    1024gb = 1tb
 *    1024tb = 1pb
 *    1024pb = 1eb
 *    
 * 1、变量
 *    可以变化的量就是变量；
 *    变量的声明：
 *       语法：
 *           数据类型  变量名;
 *    变量的初始化：
 *       语法：
 *           变量名 = 初始值;
 *    声明和初始化可以合并：
 *       语法：
 *           数据类型  变量名 = 初始值;                 
 *    解析：
 *       当前的变量主要指局部变量；
 *       布局变量在一个方法不能重复声明；但是可以重复引用使用；
 *       
 * 2、数据类型
 *   java数据类型分为：
 *       对象类型（引用类型）：Object子类、数组
 *       基本类型：8种
 * 2.1 8种基本类型的字节长度和范围大写
 *    整型：不带小数；
 *        byte    1字节
 *        short   2字节
 *        int     4字节
 *        long    8byte
 *    浮点型：带小数；
 *        float   4byte
 *        double  8byte
 *    字符型：
 *        char    2byte
 *    布尔类型：
 *        boolean 取值为true或false                 
 * 
 * 
 * 
 */
public class Test01 {

	public static void main(String[] args) {
		// 数据类型的使用
		// 变量声明和初始化
		int iAge = 20;

		// 声明
		int iAge2;
		iAge2 = 20;
		iAge2 = 21;

		// 声明byte类型
		byte bAge = 20;
		// 声明long类型
		long lAge = 2000000000000L; // 整型的数值常量默认类型为int

		// 字符型
		char ch0 = 'a'; // 英文
		char ch1 = '小'; // 中文
		char ch3 = '1'; // 数字
		char ch2 = '\uAF45'; // Unicode编码的形式表示一个字符

		System.out.println("小明年龄为：" + iAge2);

		////////////////// 基本类型之间的/////////////////////////
		// 整型之间从高到低的默认转换
		byte bVal0 = 127;
		// byte bVal1 = 128;// 因为128超出了byte的表示范围，所有不能直接使用数值常量进行赋值
		short sVal0 = bVal0;
		int iVal0 = sVal0;
		// short默认转换为long
		long lVal0 = sVal0;

		// 浮点型之间默认转换
		float fVal0 = 3.14F;
		double dVal0 = fVal0;

		// char类型默认转换整型
		char chVal0 = 'a';
		// char类型可以默认转换整型的 int long
		// short sVal1 = chVal0;
		int iVal1 = chVal0;

		/////////////// 表达式中的数据类型之间的默认转换///////////////////
		byte bVal20 = 20;
		char chVal20 = 'a';
		short sVal20 = 31;
		int iVal20 = 21;
		// byte、char、short类型的表达式的结果是int类型；
		int chVal30 = bVal20 + chVal20 + sVal20;

		int iVal31 = sVal20 + iVal20;

		/////////////// 表达式中的数据类型之间的强制转换///////////////////

		int iVal30 = 20000000;
		// 将int类型强制转换为 short类型
		short sVal30 = (short) iVal30;// 会产生溢出
		System.out.println("强制转换：" + sVal30);

		int iVal41 = (int) (iVal30 * 1.2); // double 类型
	}

}
